/*
 * @Description:
 * @Version: 2.0
 * @Autor: wiz
 * @Date: 2023-06-19 08:07:01
 * @LastEditors: wiz
 * @LastEditTime: 2023-12-17 15:10:46
 */
// 注册方法 返回成功[true], 失败[false]
import Vue from 'vue';
import { T_editor } from './config';

namespace N_oFlowchart {
  export type TA_regFn = (obj: any) => Promise<boolean>;

  export interface I_regFn {
    name: string;
    fn: TA_regFn;
  }
  export interface I_editor extends T_editor {}
  export interface I_item {
    // {
    //   codeNo: 'begin',
    //   name: '开始',
    //   label: '开始',
    //   size: '80',
    //   type: 'node',
    //   shape: 'beginNode',
    //   // 设置用于填充绘画的颜色
    //   fill: '#b7e0cc',
    //   // 设置用于笔触的颜色(RGB 或 16 进制)
    //   stroke: '#6ab7ff',
    //   // 字体颜色
    //   labelFill: '#565758',
    //   // label字体大小
    //   labelFontSize: 25,
    // color: '#1890ff',
    //   // 元素列表图标
    //   image: 'wy-rule-begin-end',
    //   // 默认不可见
    //   disabled: true
    // },

    codeNo: string;
    name: string;
    label: string;
    size: string;
    type: string;
    shape: string;
    // 设置用于填充绘画的颜色
    fill: string;
    // 设置用于笔触的颜色(RGB 或 16 进制)
    stroke: string;
    // 字体颜色
    labelFill: string;
    // label字体大小
    labelFontSize: number;
    color: string;
    // 元素列表图标
    image: string;
    // 默认不可见
    disabled: boolean;
  }

  // 按钮点击传参 onGraphToolbarClick(arg:I_toolbarCheck)
  export interface I_toolbarClick {
    key: string; // btnName
    Teditor?: I_editor; // Teditor实例
    e?: any;
  }

  // 右键菜单
  export interface I_contextMenuConf {
    offsetX?: number; // 6
    offsetY?: number; // 10
    itemType?: Array<string>; // ['node']
    // 自定义勾子方法返回false退出
    handle: (evt) => boolean;
    /* 右键菜单HTML
      <ul>
        <li>测试01</li>
        <li>测试01</li>
        <li>测试01</li>
        <li>测试01</li>
        <li>测试01</li>
      </ul>
  */
    innerHTML: string;
    // 点击时事件
    handleMenuClick: (targe, item) => void;
  }
  export interface oFlowchart extends Vue {
    GT_editor: I_editor;
    regGraphToolBarFn(obj: I_regFn);
    setEdgehoverStyles(edgeID: string, isShow: boolean);
    setToolbarBtnsDisabled(btnName: string, s: boolean);
    regFns(fns: Array<N_oFlowchart.I_regFn>): void;
    loadGraphData(d: any, isFitView: boolean);
    clearGraph();
    hideToolbarItem(name: string);
    initGraph();
    setViewMode();
    // 隐藏工具栏
    hideToolbar();

    // 显示工具栏
    showToolbar();
    // 实际尺寸
    resetZoom: () => void;
    autoZoom: () => void;
    setToolbarViewMode: () => void;
    setToolbarEditMode: () => void;
  }
}
export { N_oFlowchart };
